java正则表达式查找以开头和结尾的所有可能出现的文本~
我想找出两个~
之间所有可能出现的文本
例如:对于文本~*_abc~xyz~ ~123~
,我希望以下表达式作为匹配模式:
~*_abc~
~xyz~
~123~
注意,它可以是字母或数字
我尝试使用regex ~[\w]+?~
,但它没有给我~xyz~
。我想重新考虑一下。但我不想把~~
作为可能的匹配
你可以在下面搜索框中键入要查询的问题!
我想找出两个~
之间所有可能出现的文本
例如:对于文本~*_abc~xyz~ ~123~
,我希望以下表达式作为匹配模式:
~*_abc~
~xyz~
~123~
注意,它可以是字母或数字
我尝试使用regex ~[\w]+?~
,但它没有给我~xyz~
。我想重新考虑一下。但我不想把~~
作为可能的匹配
# 1 楼答案
将capturing inside a positive lookahead与以下正则表达式一起使用:
所以,使用
见regex demo
模式
(?=(~[^\s~]+~))
检查字符串中的每个位置,并搜索~
后跟除空格和~
以外的1+字符,然后再后跟另一个~
。由于索引仅在检查位置后移动,而不是在捕获值时移动,因此会提取重叠的子字符串Java demo:
以防有人需要Python demo:
# 2 楼答案
试试这个
[^~\s]*
此模式不考虑字符^ {< CD2>}和空间(参照A^ ^ {CD3>})。
我已经测试过了,它对你的字符串有效,这里是the demo